#ifndef __DRIVER_HDEC_H__
#define __DRIVER_HDEC_H__

#include "char_dev.h"
#include"sys_types.h"

extern const dev_description_t g_hdec_dev_description;

typedef struct {
	unsigned int h264_dec_w;
	unsigned int h264_dec_h;
	unsigned char num_p_of_gop;
	unsigned char filter_enable;
}drv_hdec_param_t;

typedef struct {
	uint32_t data;

}drv_cb_data_t;

typedef struct {
	drv_hdec_param_t param;
	void (*call_back)(int event, void* user_data);
	void* user_data;
}drv_hdec_cfg_t;

typedef struct {
	uint8_t* addr;
	uint32_t len;
	uint8_t ram_id;
	uint8_t buf_type;
}drv_hdec_buf_t;

enum drv_hdec_buf_type {
	I_FRAME_BUF = 0x01,
	P_FRAME_BUF = 0x02,
	END_STREAM_BUF = 0x4,
};

enum drv_hdec_ioctl_cmd {
	HDEC_CREATE_BUFS,
	HDEC_QUERY_BUF,
	HDEC_QBUF,
	HDEC_DQBUF,
	HDEC_SET_IFRAME_SIZE,
	HDEC_ENABLE,
	HDEC_START,
	HDEC_STOP,
};

enum {
	/* HDEC IRQ EVNET*/
	EVENT_HDEC_FRAME_IRQ,
	EVENT_HDEC_DATA_IRQ,
	EVENT_HDEC_YUV_IRQ,
	EVENT_HDEC_ERROR_IRQ,
};

#endif
